package com.visizen.wisdomclass.server.client;

import com.visizen.wisdomclass.server.model.WcLocationRecord;
import com.visizen.wisdomclass.server.model.WcLocationRecordExample;
import com.visizen.wisdomclass.server.model.WcLocationRecordExample.Criteria;
import com.visizen.wisdomclass.server.model.WcLocationRecordExample.Criterion;

import java.util.List;
import java.util.Map;

import static org.apache.ibatis.jdbc.SqlBuilder.*;

public class WcLocationRecordSqlProvider {

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_location_record
	 * @mbggenerated
	 */
	public String countByExample(WcLocationRecordExample example) {
		BEGIN();
		SELECT("count(*)");
		FROM("wc_location_record");
		applyWhere(example, false);
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_location_record
	 * @mbggenerated
	 */
	public String deleteByExample(WcLocationRecordExample example) {
		BEGIN();
		DELETE_FROM("wc_location_record");
		applyWhere(example, false);
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_location_record
	 * @mbggenerated
	 */
	public String insertSelective(WcLocationRecord record) {
		BEGIN();
		INSERT_INTO("wc_location_record");
		if (record.getLocation_record_id() != null) {
			VALUES("location_record_id",
					"#{location_record_id,jdbcType=BIGINT}");
		}
		if (record.getUser_id() != null) {
			VALUES("user_id", "#{user_id,jdbcType=BIGINT}");
		}
		if (record.getEquip_id() != null) {
			VALUES("equip_id", "#{equip_id,jdbcType=BIGINT}");
		}
		if (record.getLongitude() != null) {
			VALUES("longitude", "#{longitude,jdbcType=DOUBLE}");
		}
		if (record.getLatitude() != null) {
			VALUES("latitude", "#{latitude,jdbcType=DOUBLE}");
		}
		if (record.getAltitude() != null) {
			VALUES("Altitude", "#{altitude,jdbcType=DOUBLE}");
		}
		if (record.getAccuracy() != null) {
			VALUES("Accuracy", "#{accuracy,jdbcType=DOUBLE}");
		}
		if (record.getNation() != null) {
			VALUES("Nation", "#{nation,jdbcType=VARCHAR}");
		}
		if (record.getProvince() != null) {
			VALUES("Province", "#{province,jdbcType=VARCHAR}");
		}
		if (record.getCity() != null) {
			VALUES("City", "#{city,jdbcType=VARCHAR}");
		}
		if (record.getDistrict() != null) {
			VALUES("District", "#{district,jdbcType=VARCHAR}");
		}
		if (record.getTown() != null) {
			VALUES("Town", "#{town,jdbcType=VARCHAR}");
		}
		if (record.getVillage() != null) {
			VALUES("Village", "#{village,jdbcType=VARCHAR}");
		}
		if (record.getStreet() != null) {
			VALUES("Street", "#{street,jdbcType=VARCHAR}");
		}
		if (record.getStreetNo() != null) {
			VALUES("StreetNo", "#{streetNo,jdbcType=VARCHAR}");
		}
		if (record.getLocation_time() != null) {
			VALUES("location_time", "#{location_time,jdbcType=TIMESTAMP}");
		}
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_location_record
	 * @mbggenerated
	 */
	public String selectByExample(WcLocationRecordExample example) {
		BEGIN();
		if (example != null && example.isDistinct()) {
			SELECT_DISTINCT("location_record_id");
		} else {
			SELECT("location_record_id");
		}
		SELECT("user_id");
		SELECT("equip_id");
		SELECT("longitude");
		SELECT("latitude");
		SELECT("Altitude");
		SELECT("Accuracy");
		SELECT("Nation");
		SELECT("Province");
		SELECT("City");
		SELECT("District");
		SELECT("Town");
		SELECT("Village");
		SELECT("Street");
		SELECT("StreetNo");
		SELECT("location_time");
		FROM("wc_location_record");
		applyWhere(example, false);
		if (example != null && example.getOrderByClause() != null) {
			ORDER_BY(example.getOrderByClause());
		}
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_location_record
	 * @mbggenerated
	 */
	public String updateByExampleSelective(Map<String, Object> parameter) {
		WcLocationRecord record = (WcLocationRecord) parameter.get("record");
		WcLocationRecordExample example = (WcLocationRecordExample) parameter
				.get("example");
		BEGIN();
		UPDATE("wc_location_record");
		if (record.getLocation_record_id() != null) {
			SET("location_record_id = #{record.location_record_id,jdbcType=BIGINT}");
		}
		if (record.getUser_id() != null) {
			SET("user_id = #{record.user_id,jdbcType=BIGINT}");
		}
		if (record.getEquip_id() != null) {
			SET("equip_id = #{record.equip_id,jdbcType=BIGINT}");
		}
		if (record.getLongitude() != null) {
			SET("longitude = #{record.longitude,jdbcType=DOUBLE}");
		}
		if (record.getLatitude() != null) {
			SET("latitude = #{record.latitude,jdbcType=DOUBLE}");
		}
		if (record.getAltitude() != null) {
			SET("Altitude = #{record.altitude,jdbcType=DOUBLE}");
		}
		if (record.getAccuracy() != null) {
			SET("Accuracy = #{record.accuracy,jdbcType=DOUBLE}");
		}
		if (record.getNation() != null) {
			SET("Nation = #{record.nation,jdbcType=VARCHAR}");
		}
		if (record.getProvince() != null) {
			SET("Province = #{record.province,jdbcType=VARCHAR}");
		}
		if (record.getCity() != null) {
			SET("City = #{record.city,jdbcType=VARCHAR}");
		}
		if (record.getDistrict() != null) {
			SET("District = #{record.district,jdbcType=VARCHAR}");
		}
		if (record.getTown() != null) {
			SET("Town = #{record.town,jdbcType=VARCHAR}");
		}
		if (record.getVillage() != null) {
			SET("Village = #{record.village,jdbcType=VARCHAR}");
		}
		if (record.getStreet() != null) {
			SET("Street = #{record.street,jdbcType=VARCHAR}");
		}
		if (record.getStreetNo() != null) {
			SET("StreetNo = #{record.streetNo,jdbcType=VARCHAR}");
		}
		if (record.getLocation_time() != null) {
			SET("location_time = #{record.location_time,jdbcType=TIMESTAMP}");
		}
		applyWhere(example, true);
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_location_record
	 * @mbggenerated
	 */
	public String updateByExample(Map<String, Object> parameter) {
		BEGIN();
		UPDATE("wc_location_record");
		SET("location_record_id = #{record.location_record_id,jdbcType=BIGINT}");
		SET("user_id = #{record.user_id,jdbcType=BIGINT}");
		SET("equip_id = #{record.equip_id,jdbcType=BIGINT}");
		SET("longitude = #{record.longitude,jdbcType=DOUBLE}");
		SET("latitude = #{record.latitude,jdbcType=DOUBLE}");
		SET("Altitude = #{record.altitude,jdbcType=DOUBLE}");
		SET("Accuracy = #{record.accuracy,jdbcType=DOUBLE}");
		SET("Nation = #{record.nation,jdbcType=VARCHAR}");
		SET("Province = #{record.province,jdbcType=VARCHAR}");
		SET("City = #{record.city,jdbcType=VARCHAR}");
		SET("District = #{record.district,jdbcType=VARCHAR}");
		SET("Town = #{record.town,jdbcType=VARCHAR}");
		SET("Village = #{record.village,jdbcType=VARCHAR}");
		SET("Street = #{record.street,jdbcType=VARCHAR}");
		SET("StreetNo = #{record.streetNo,jdbcType=VARCHAR}");
		SET("location_time = #{record.location_time,jdbcType=TIMESTAMP}");
		WcLocationRecordExample example = (WcLocationRecordExample) parameter
				.get("example");
		applyWhere(example, true);
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_location_record
	 * @mbggenerated
	 */
	public String updateByPrimaryKeySelective(WcLocationRecord record) {
		BEGIN();
		UPDATE("wc_location_record");
		if (record.getUser_id() != null) {
			SET("user_id = #{user_id,jdbcType=BIGINT}");
		}
		if (record.getEquip_id() != null) {
			SET("equip_id = #{equip_id,jdbcType=BIGINT}");
		}
		if (record.getLongitude() != null) {
			SET("longitude = #{longitude,jdbcType=DOUBLE}");
		}
		if (record.getLatitude() != null) {
			SET("latitude = #{latitude,jdbcType=DOUBLE}");
		}
		if (record.getAltitude() != null) {
			SET("Altitude = #{altitude,jdbcType=DOUBLE}");
		}
		if (record.getAccuracy() != null) {
			SET("Accuracy = #{accuracy,jdbcType=DOUBLE}");
		}
		if (record.getNation() != null) {
			SET("Nation = #{nation,jdbcType=VARCHAR}");
		}
		if (record.getProvince() != null) {
			SET("Province = #{province,jdbcType=VARCHAR}");
		}
		if (record.getCity() != null) {
			SET("City = #{city,jdbcType=VARCHAR}");
		}
		if (record.getDistrict() != null) {
			SET("District = #{district,jdbcType=VARCHAR}");
		}
		if (record.getTown() != null) {
			SET("Town = #{town,jdbcType=VARCHAR}");
		}
		if (record.getVillage() != null) {
			SET("Village = #{village,jdbcType=VARCHAR}");
		}
		if (record.getStreet() != null) {
			SET("Street = #{street,jdbcType=VARCHAR}");
		}
		if (record.getStreetNo() != null) {
			SET("StreetNo = #{streetNo,jdbcType=VARCHAR}");
		}
		if (record.getLocation_time() != null) {
			SET("location_time = #{location_time,jdbcType=TIMESTAMP}");
		}
		WHERE("location_record_id = #{location_record_id,jdbcType=BIGINT}");
		return SQL();
	}

	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table wc_location_record
	 * @mbggenerated
	 */
	protected void applyWhere(WcLocationRecordExample example,boolean includeExamplePhrase){if (example == null){return;}String parmPhrase1;String parmPhrase1_th;String parmPhrase2;String parmPhrase2_th;String parmPhrase3;String parmPhrase3_th;if (includeExamplePhrase){parmPhrase1="%s #{example.oredCriteria[%d].allCriteria[%d].value}";parmPhrase1_th="%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";parmPhrase2="%s #{example.oredCriteria[%d].allCriteria[%d].value} and #{example.oredCriteria[%d].criteria[%d].secondValue}";parmPhrase2_th="%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{example.oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";parmPhrase3="#{example.oredCriteria[%d].allCriteria[%d].value[%d]}";parmPhrase3_th="#{example.oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";} else {parmPhrase1="%s #{oredCriteria[%d].allCriteria[%d].value}";parmPhrase1_th="%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}";parmPhrase2="%s #{oredCriteria[%d].allCriteria[%d].value} and #{oredCriteria[%d].criteria[%d].secondValue}";parmPhrase2_th="%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}";parmPhrase3="#{oredCriteria[%d].allCriteria[%d].value[%d]}";parmPhrase3_th="#{oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}";}StringBuilder sb=new StringBuilder();List<Criteria> oredCriteria=example.getOredCriteria();boolean firstCriteria=true;for (int i=0;i < oredCriteria.size();i++){Criteria criteria=oredCriteria.get(i);if (criteria.isValid()){if (firstCriteria){firstCriteria=false;} else {sb.append(" or ");}sb.append('(');List<Criterion> criterions=criteria.getAllCriteria();boolean firstCriterion=true;for (int j=0;j < criterions.size();j++){Criterion criterion=criterions.get(j);if (firstCriterion){firstCriterion=false;} else {sb.append(" and ");}if (criterion.isNoValue()){sb.append(criterion.getCondition());} else if (criterion.isSingleValue()){if (criterion.getTypeHandler() == null){sb.append(String.format(parmPhrase1,criterion.getCondition(),i,j));} else {sb.append(String.format(parmPhrase1_th,criterion.getCondition(),i,j,criterion.getTypeHandler()));}} else if (criterion.isBetweenValue()){if (criterion.getTypeHandler() == null){sb.append(String.format(parmPhrase2,criterion.getCondition(),i,j,i,j));} else {sb.append(String.format(parmPhrase2_th,criterion.getCondition(),i,j,criterion.getTypeHandler(),i,j,criterion.getTypeHandler()));}} else if (criterion.isListValue()){sb.append(criterion.getCondition());sb.append(" (");List<?> listItems=(List<?>)criterion.getValue();boolean comma=false;for (int k=0;k < listItems.size();k++){if (comma){sb.append(", ");} else {comma=true;}if (criterion.getTypeHandler() == null){sb.append(String.format(parmPhrase3,i,j,k));} else {sb.append(String.format(parmPhrase3_th,i,j,k,criterion.getTypeHandler()));}}sb.append(')');}}sb.append(')');}}if (sb.length() > 0){WHERE(sb.toString());}}
}